/* Original Author:  Dominick O'Dierno
 * Date: 2007   odiernod@gmail.com     --Originally intended for use with DOMercury:  http://www.odierno.com/domercury
 * Description: Defines an interface to provide IItems as parameters for certain actions
 * 
 * --CHANGELOG--
 * Date     email                   Description
 * 4/4/08   odiernod@gmail.com      Changed the ParameterDataSource from object to List<IItem>.  This seemed fitting since accessing the main DOMerucyIndex is now possible from plugins
 * */
using System;
using System.Collections.Generic;
using System.Text;

namespace DOMercury.Interfaces
{
    public interface IParametersProvider
    {
        /// <summary>
        /// The name of your IParametersProvider
        /// </summary>
        string Name
        {
            get;
        }
        /// <summary>
        /// The description of your IParametersProvider
        /// </summary>
        string Description
        {
            get;
        }
        
        /// <summary>
        /// The type of parameter this provider provides.
        /// </summary>
        string ParameterType
        {
            get;
        }

        /// <summary>
        /// A list of objects to populate the Parameters list in the parameters pane
        /// </summary>
        List<IItem> ParameterDataSource
        {
            get;
        }
        
        /// <summary>
        /// The display member of your Parameters object. 
        /// </summary>
        string ParameterDisplayMember
        {
            get;
        }

        /// <summary>
        /// Indicates whether or not this plugin has an options form.  Return false if not supplying an options form
        /// </summary>
        bool HasOptions
        {
            get;
        }

        /// <summary>
        /// This is the function that gets called when the user hits the "Show Options" but in the Plugin Details form.  You should call "ShowDialog" on your options form here.
        /// </summary>
        void ShowOptions();
    }
}
